package com.课上案例练习.反射机制.得到Class对象的方式有三种方式;

import com.课上案例练习.反射机制.Bean.Student;

/**
 *
 *
 *  得到Class对象的方式有三种方式
 * - 使用.class  当没有使用new关键字实例化对象的时候我们可以直接通过类名.class
 * - 使用getClass()  已经实例化对象了，通过对象名.getClass来得到类对象
 * - Class.forname(); 通过该类的完全限定名，类完整类路径来得到它的类对象
 *
 */
public class Test1 {
    public static void main(String[] args) throws InstantiationException, IllegalAccessException, ClassNotFoundException {
        // * - 使用.class  当没有使用new关键字实例化对象的时候我们可以直接通过类名.class
//        demo1();
       // * - 使用getClass()  已经实例化对象了，通过对象名.getClass来得到类对象
//        demo2();
//         * - Class.forname(); 通过该类的完全限定名，类完整类路径来得到它的类对象
        demo3();
    }

    private static void demo3() throws ClassNotFoundException, InstantiationException, IllegalAccessException {
        Class<?> aClass = Class.forName("com.课上案例练习.反射机制.Bean.Student");
        System.out.println(aClass.newInstance());
    }

    private static void demo2() throws InstantiationException, IllegalAccessException {
        Student student = new Student();
        Class studentClass = student.getClass();
        System.out.println(studentClass.newInstance());
    }

    private static void demo1() throws InstantiationException, IllegalAccessException {
        Class studentClass = Student.class;
        System.out.println(studentClass.newInstance());
    }
}
